﻿

#region using namespace
using System.Collections.Generic;
using System.Linq;
using DTO;
using System;
#endregion

namespace DAO
{
    public class TuKhoaDiaDiemDAO
    {
        // tim tu khoa dia diem dua vao ma tu khoa dia diem.
        public List<TuKhoaDiaDiemDTO> Search(string strInput)
        {
            TuKhoaDiaDiemDTO tukhoadiadiemDTO = null;
            strInput = strInput.Replace(@"'", @"''");
            List<TuKhoaDiaDiemDTO> lsttukhoadiadiem = getAllTuKhoaDiaDiem();

            List<TuKhoaDiaDiemDTO> ilsttukhoadiadiem = new List<TuKhoaDiaDiemDTO>();

           
            foreach (TuKhoaDiaDiemDTO tukhoa in lsttukhoadiadiem)
            {
                if (strInput.Contains(tukhoa.TuKhoaTenDiaDiem) || tukhoa.TuKhoaTenDiaDiem.Contains(strInput))
                {
                    tukhoadiadiemDTO = new TuKhoaDiaDiemDTO();

                    tukhoadiadiemDTO.MaTenDiaDiem = tukhoa.MaTenDiaDiem;
                    tukhoadiadiemDTO.MaTuKhoaTenDiaDiem = tukhoa.MaTuKhoaTenDiaDiem;
                    tukhoadiadiemDTO.TuKhoaTenDiaDiem = tukhoa.TuKhoaTenDiaDiem;

                    ilsttukhoadiadiem.Add(tukhoadiadiemDTO);
                }
            }
            return ilsttukhoadiadiem;
        }

        //lay tat ca cac thuoc tinh cua bang tu khoa dia diem.
        public static List<TuKhoaDiaDiemDTO> getAllTuKhoaDiaDiem()
        {
            IList<TUKHOADIADIEM> ilsttktendiadiem;
            List<TuKhoaDiaDiemDTO> lsttktendiadiem = new List<TuKhoaDiaDiemDTO>();
            TuKhoaDiaDiemDTO tktendiadiem = null;

            using (var context = new DataContext(GlobalDatabase.ConnectString))
            {
                ilsttktendiadiem = (from tktdd in context.TUKHOADIADIEMs select tktdd).ToList();
            }

            for (int i = 0; i < ilsttktendiadiem.Count; i++)
            {
                tktendiadiem = new TuKhoaDiaDiemDTO();

                tktendiadiem.MaTenDiaDiem = (int)ilsttktendiadiem[i].MaTenDiaDiem;
                tktendiadiem.MaTuKhoaTenDiaDiem = ilsttktendiadiem[i].MaTuKhoaTenDiaDiem;
                tktendiadiem.TuKhoaTenDiaDiem = ilsttktendiadiem[i].TuKhoaTenDiaDiem;

                lsttktendiadiem.Add(tktendiadiem);
            }

            return (List<TuKhoaDiaDiemDTO>)lsttktendiadiem;
        }


        public List<TuKhoaDiaDiemDTO> AutoCompleteTuKhoaDiaDiem(string strInput)
        {
            List<TuKhoaDiaDiemDTO> lsttkdiadiemDTO = new List<TuKhoaDiaDiemDTO>();
            TuKhoaDiaDiemDTO tukhoadiadiemDTO = null;

            strInput = strInput.Replace(@"'", @"''");

            List<TuKhoaDiaDiemDTO> lsttukhoadiadiem = getAllTuKhoaDiaDiem();
 

            foreach (TuKhoaDiaDiemDTO tukhoa in lsttukhoadiadiem)
            {
                if (strInput == tukhoa.TuKhoaTenDiaDiem)
                {
                    tukhoadiadiemDTO = new TuKhoaDiaDiemDTO();

                    tukhoadiadiemDTO.MaTenDiaDiem = tukhoa.MaTenDiaDiem;
                    tukhoadiadiemDTO.MaTuKhoaTenDiaDiem = tukhoa.MaTuKhoaTenDiaDiem;
                    tukhoadiadiemDTO.TuKhoaTenDiaDiem = tukhoa.TuKhoaTenDiaDiem;

                    lsttkdiadiemDTO.Add(tukhoadiadiemDTO);
                }
            }
            return lsttkdiadiemDTO;
        }


        public List<TuKhoaDiaDiemDTO> AutoCompleteTuKhoaDiaDiemTheoDichVu(string strInput, int MaDichVu)
        {
            List<TuKhoaDiaDiemDTO> lstTuKhoaDiaDiem = new List<TuKhoaDiaDiemDTO>();

            List<TuKhoaDiaDiemDTO> lsttukhoadiadiem = getAllTuKhoaDiaDiem();
            TuKhoaDiaDiemDTO tuKhoaDiaDiemDTO = null;


            List<TenDiaDiemDTO> lsttendiadiem = TenDiaDiemDAO.getAllTenDiaDiem(); // lay du lieu trong bang Ten Dia Diem
            List<DuLieuDTO> dulieuDTO = DuLieuDAO.getAllDuLieu();  // lay du lieu trong bang DuLieu

            foreach (TuKhoaDiaDiemDTO tukhoa in lsttukhoadiadiem)
            {
                foreach (TenDiaDiemDTO tendd in lsttendiadiem)
                {
                    foreach (DuLieuDTO dlieu in dulieuDTO)
                    {
                        if ((tukhoa.TuKhoaTenDiaDiem == strInput) &&
                            tukhoa.MaTenDiaDiem == tendd.MaTenDiaDiem && 
                            tendd.MaTenDiaDiem == dlieu.MaTenDiaDiem && 
                            dlieu.MaDichVu == MaDichVu)
                        {
                            tuKhoaDiaDiemDTO = new TuKhoaDiaDiemDTO();

                            tuKhoaDiaDiemDTO.TuKhoaTenDiaDiem = tukhoa.TuKhoaTenDiaDiem;
                            tuKhoaDiaDiemDTO.MaTenDiaDiem = tukhoa.MaTenDiaDiem;
                            tuKhoaDiaDiemDTO.MaTuKhoaTenDiaDiem = tukhoa.MaTuKhoaTenDiaDiem;

                            lstTuKhoaDiaDiem.Add(tuKhoaDiaDiemDTO);

                            if (lstTuKhoaDiaDiem.Count == 10)
                            {
                                break;
                            }
                        }
                    }
                    if (lstTuKhoaDiaDiem.Count == 10)
                    {
                        break;
                    }

                }
                if (lstTuKhoaDiaDiem.Count == 10)
                {
                    break;
                }
            }

            return lstTuKhoaDiaDiem;
        }
        
    }
}
